package models

//注册请求，样例：
//`{
//	"RegisterObject":{
//		"DeviceID":"666666"
//	}
//}`
type registerPacket struct {
	RegisterObject struct {
		DeviceID string `json:"DeviceID"`
	} `json:"RegisterObject"`
}

//注册请求回复，样例：
//`{
//	"ResponseStatusObject": {
//		"RequestURL": "http://192.168.1.133:10003/VIID/Register",
//		"StatusCode": 0,
//		"StatusString": "正常",
//		"Id": "666666",
//		"LocalTime": "20200710141428"
//	}
//}`
type registerPacketReply struct {
	ResponseStatusObject responseStatusObject `json:"ResponseStatusObject"`
}

type responseStatusObject struct {
	RequestURL   string `json:"RequestURL"`
	StatusCode   int64  `json:"StatusCode"`
	StatusString string `json:"StatusString"`
	Id           string `json:"Id"`
	LocalTime    string `json:"LocalTime"`
}

//保活请求，样例：
//`{
//	"KeepaliveObject":{
//		"DeviceID":"666666"
//	}
//}`
type keepalivePacket struct {
	KeepaliveObject struct {
		DeviceID string `json:"DeviceID"`
	} `json:"KeepaliveObject"`
}

//保活请求回复，样例：
//`{
//	"ResponseStatusObject": {
//		"RequestURL": "http://192.168.1.133:10003/VIID/Keepalive",
//		"StatusCode": 0,
//		"StatusString": "正常",
//		"Id": "666666",
//		"LocalTime": "20200710142829"
//	}
//}`
type keepalivePacketReply struct {
	ResponseStatusObject responseStatusObject `json:"ResponseStatusObject"`
}

//人脸新增图片数据，样例：
//`{
//	"FaceListObject":	{
//		"FaceObject":	[{
//			"FaceID":	"111110220200710143217001770600178",
//			"InfoKind":	1,
//			"SourceID":	"11111022020071014321700177",
//			"DeviceID":	"11111",
//			"ShotTime":	"20200710143217",
//			"LeftTopX":	512,
//			"LeftTopY":	369,
//			"RightBtmX":	749,
//			"RightBtmY":	707,
//			"LocationMarkTime":	"20200710143217",
//			"FaceAppearTime":	"20200710143217",
//			"FaceDisAppearTime":	"20200710143217",
//			"GenderCode":	"1",
//			"AgeUpLimit":	28,
//			"AgeLowerLimit":	28,
//			"GlassStyle":	"99",
//			"Emotion":	"1",
//			"IsDriver":	2,
//			"IsForeigner":	2,
//			"IsSuspectedTerrorist":	2,
//			"IsCriminalInvolved":	2,
//			"IsDetainees":	2,
//			"IsVictim":	2,
//			"IsSuspiciousPerson":	2,
//			"Similaritydegree":	0,
//			"SubImageList":	{
//				"SubImageInfoObject":	[{
//					"ImageID":	"11111022020071014321700177",
//					"EventSort":	10,
//					"DeviceID":	"11111",
//					"StoragePath":	"",
//					"Type":	"14",
//					"FileFormat":	"Jpeg",
//					"ShotTime":	"20200710143217",
//					"Width":	1920,
//					"Height":	1264,
//					"Data":	"图片数据"
//					}, {
//					"ImageID":	"11111022020071014321700180",
//					"EventSort":	10,
//					"DeviceID":	"11111",
//					"StoragePath":	"",
//					"Type":	"11",
//					"FileFormat":	"Jpeg",
//					"ShotTime":	"20200710143217",
//					"Width":	896,
//					"Height":	700,
//					"Data":	"图片数据"
//					}]
//			},
//			"RelatedType":	"01",
//			"RelatedList":	{
//				"RelatedObject":	[{
//					"RelatedType":	"01",
//					"RelatedID":	"111110220200710143217001770100179"
//				}]
//			}
//		}]
//	}
//}`
type faceListObjectPacket struct {
	FaceListObject faceObject `json:"FaceListObject"`
}

type faceObject struct {
	FaceObject []faceObjectMsg `json:"FaceObject"`
}

type faceObjectMsg struct {
	FaceID               string       `json:"FaceID"`
	InfoKind             int64        `json:"InfoKind"`
	SourceID             string       `json:"SourceID"`
	DeviceID             string       `json:"DeviceID"`
	ShotTime             string       `json:"ShotTime"`
	LeftTopX             int64        `json:"LeftTopX"`
	LeftTopY             int64        `json:"LeftTopY"`
	RightBtmX            int64        `json:"RightBtmX"`
	RightBtmY            int64        `json:"RightBtmY"`
	LocationMarkTime     string       `json:"LocationMarkTime"`
	FaceAppearTime       string       `json:"FaceAppearTime"`
	FaceDisAppearTime    string       `json:"FaceDisAppearTime"`
	GenderCode           string       `json:"GenderCode"`
	AgeUpLimit           int64        `json:"AgeUpLimit"`
	AgeLowerLimit        int64        `json:"AgeLowerLimit"`
	GlassStyle           string       `json:"GlassStyle"`
	Emotion              string       `json:"Emotion"`
	IsDriver             int64        `json:"IsDriver"`
	IsForeigner          int64        `json:"IsForeigner"`
	IsSuspectedTerrorist int64        `json:"IsSuspectedTerrorist"`
	IsCriminalInvolved   int64        `json:"IsCriminalInvolved"`
	IsDetainees          int64        `json:"IsDetainees"`
	IsVictim             int64        `json:"IsVictim"`
	IsSuspiciousPerson   int64        `json:"IsSuspiciousPerson"`
	Similaritydegree     int64        `json:"Similaritydegree"`
	SubImageList         subImageList `json:"SubImageList"`
	RelatedType          string       `json:"RelatedType"`
	RelatedList          relatedList  `json:"RelatedList"`
}

type subImageList struct {
	SubImageInfoObject []subImageInfoObjectMsg `json:"SubImageInfoObject"`
}

type subImageInfoObjectMsg struct {
	ImageID     string `json:"ImageID"`
	EventSort   int64  `json:"EventSort"`
	DeviceID    string `json:"DeviceID"`
	StoragePath string `json:"StoragePath"`
	Type        string `json:"Type"`
	FileFormat  string `json:"FileFormat"`
	ShotTime    string `json:"ShotTime"`
	Width       int64  `json:"Width"`
	Height      int64  `json:"Height"`
	Data        string `json:"Data"`
}

type relatedList struct {
	RelatedObject []relatedObjectMsg `json:"RelatedObject"`
}

type relatedObjectMsg struct {
	RelatedType string `json:"RelatedType"`
	RelatedID   string `json:"RelatedID"`
}

//人脸新增图片回复，样例：
//`{
//	"ResponseStatusObject": {
//		"RequestURL": "http://192.168.1.133:10003/VIID/Faces",
//		"StatusCode": 0,
//		"StatusString": "正常",
//		"Id": "666666",
//		"LocalTime": "20200713140520"
//	}
//}`
type facesPacketReply struct {
	ResponseStatusObject responseStatusObject `json:"ResponseStatusObject"`
}

//路由/VIID/System/Time请求回复，样例：
//`{
//	"SystemTimeObject": {
//		"VIIDServerID": "8C5BED13-5CBC-4EFB-AEFB-D57DB4F24F60",
//		"TimeMode": "",
//		"LocalTime": "20200713140520",
//		"TimeZone": ""
//	}
//}`
type timePacketReply struct {
	SystemTimeObject systemTimeObject `json:"SystemTimeObject"`
}

type systemTimeObject struct {
	VIIDServerID string `json:"VIIDServerID"`
	TimeMode     string `json:"TimeMode"`
	LocalTime    string `json:"LocalTime"`
	TimeZone     string `json:"TimeZone"`
}

//人员新增图片数据，样例：
//`{
//	"PersonListObject":	{
//		"PersonObject":	[{
//				"PersonID":	"111110220200713152053010710101072",
//				"InfoKind":	1,
//				"SourceID":	"11111022020071315205301071",
//				"DeviceID":	"11111",
//				"LeftTopX":	1,
//				"LeftTopY":	188,
//				"RightBtmX":	999,
//				"RightBtmY":	997,
//				"LocationMarkTime":	"20200713152053",
//				"PersonAppearTime":	"20200713152053",
//				"PersonDisAppearTime ":	"20200713152053",
//				"GenderCode":	"2",
//				"HairStyle":	"99",
//				"CoatLength":	"1",
//				"CoatColor":	"99",
//				"TrousersColor":	"99",
//				"TrousersLen":	"1",
//				"IsDriver":	2,
//				"IsForeigner":	2,
//				"IsSuspectedTerrorist":	2,
//				"IsCriminalInvolved":	2,
//				"IsDetainees":	2,
//				"IsVictim":	2,
//				"IsSuspiciousPerson":	2,
//				"SubImageList":	{
//					"SubImageInfoObject":	[{
//							"ImageID":	"11111022020071315205301071",
//							"EventSort":	9,
//							"DeviceID":	"11111",
//							"StoragePath":	"",
//							"Type":	"14",
//							"FileFormat":	"Jpeg",
//							"ShotTime":	"20200713152053",
//							"Width":	1920,
//							"Height":	1264,
//							"Data":	"图片1"
//						}, {
//							"ImageID":	"11111022020071315205301073",
//							"EventSort":	9,
//							"DeviceID":	"11111",
//							"StoragePath":	"",
//							"Type":	"10",
//							"FileFormat":	"Jpeg",
//							"ShotTime":	"20200713152053",
//							"Width":	704,
//							"Height":	368,
//							"Data":	"图片2"
//							}]
//				}
//			}]
//	}
//}`
type personListObjectPacket struct {
	PersonListObject personObject `json:"PersonListObject"`
}

type personObject struct {
	PersonObject []personObjectMsg `json:"PersonObject"`
}

type personObjectMsg struct {
	PersonID             string       `json:"PersonID"`
	InfoKind             int64        `json:"InfoKind"`
	SourceID             string       `json:"SourceID"`
	DeviceID             string       `json:"DeviceID"`
	LeftTopX             int64        `json:"LeftTopX"`
	LeftTopY             int64        `json:"LeftTopY"`
	RightBtmX            int64        `json:"RightBtmX"`
	RightBtmY            int64        `json:"RightBtmY"`
	LocationMarkTime     string       `json:"LocationMarkTime"`
	PersonAppearTime     string       `json:"PersonAppearTime"`
	PersonDisAppearTime  string       `json:"PersonDisAppearTime"`
	GenderCode           string       `json:"GenderCode"`
	HairStyle            string       `json:"HairStyle"`
	CoatLength           string       `json:"CoatLength"`
	CoatColor            string       `json:"CoatColor"`
	TrousersColor        string       `json:"TrousersColor"`
	TrousersLen          string       `json:"TrousersLen"`
	IsDriver             int64        `json:"IsDriver"`
	IsForeigner          int64        `json:"IsForeigner"`
	IsSuspectedTerrorist int64        `json:"IsSuspectedTerrorist"`
	IsCriminalInvolved   int64        `json:"IsCriminalInvolved"`
	IsDetainees          int64        `json:"IsDetainees"`
	IsVictim             int64        `json:"IsVictim"`
	IsSuspiciousPerson   int64        `json:"IsSuspiciousPerson"`
	SubImageList         subImageList `json:"SubImageList"`
}

//人员新增图片回复，样例：
//`{
//	"ResponseStatusObject": {
//		"RequestURL": "http://192.168.1.133:10003/VIID/Persons",
//		"StatusCode": 0,
//		"StatusString": "正常",
//		"Id": "666666",
//		"LocalTime": "20200713140520"
//	}
//}`
type personPacketReply struct {
	ResponseStatusObject responseStatusObject `json:"ResponseStatusObject"`
}
